/*
基本数据类型之间的运算规则：

前提：这里讨论只是7中基本数据类型变量的运算。不包含boolean类型的。
1. 自动类型提升：
	当容量小的数据类型的变量和容量大的数据类型的变量做运算时，结果自动提升为容量大的数据类型。
	char、byte、short-->int-->long-->float-->double

	特别的：当byte、char、short三种类型的变量做运算时，结果为int类型

2. 强制类型转换：
	
说明：此时容量大小指的是，表示数的范围的大和小。比如：float容量要大于long的容量
*/
class VariableTest2{
	public static void main(String[] args) {
		byte b1 = 2;
		int i1 = 129;
		//编译不通过
//		byte b2 = b1 + i1;
		int i2 = b1 + i1;
		long l1 = b1 + i1;
		System.out.println(i2);
		System.out.println(l1);

		float f = b1 + i1;
		System.out.println(f);
		//***************特别的**************************
		char c1 = 'a';	//97
		int i3 = 10;
		int i4 = c1 + i3;
		System.out.println(i4);

		short s2 = 10;
		//编译错误
//		char c3 = c1 + s2;
		
		byte b2 = 10;
//		char c3 = c1 + b2;	//编译不通过
//		short s3 = b2 + s2;	//编译不通过
//		short s4 = b1 + b2;	//编译不通过
	}
}
class VariableTest4{
	public static void main(String[] args){
		//1. 编码情况
		long l = 123456;
		System.out.println(l);
		//编译失败：过大的整数
		//long l1 = 452367894586235;
		long l1 = 452367894586235L;
		//**************************
		//编译失败
//		float f1 = 12.3;

		//2. 编码情况2:
		//整型变量，默认类型为int型
		//浮点型变量，默认类型为double型
		byte b = 12;
	//	byte b1 = b + 1;	//编译失败
	//	float f1 = b + 12.3;	//编译失败
	}
}


/*
String类型变量的使用
1. String属于引用数据类型
2. 声明String类型变量时，使用一对""
3. String可以和8种基本数据类型变量做运算，且运算只能是连接运算；+
4. 运算的结果任然是String类型
*/
class StringTest{
	public static void main(String[] args){

		String s1 = "Good Moon!";

		System.out.println(s1);

		String s2 = "a";
		String s3 = "";

//		char c = '';	//编译不通过
		
		//*******************************
		int number = 1001;
		String numberStr = "学号:";
		String info = numberStr + number;	//连接运算
		boolean b1 = true;
		String info1 = info + true;
		System.out.println(info1);
	}
}
